package es.antonio.duarte.abrahamAdmin.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.GenericGenerator;
/**
 * Clase de modelo anotada con Hibernate para hacer este pojo en una entidad.
 * @author nacho
 *
 */
@Entity
@GenericGenerator(name = "nativo", strategy = "native")
@Table(name = "FRASE", schema = "PUBLIC")
public class Frase implements Serializable {

   /**
    * El identifiicador de esta clase.
    */
   private Long id;
   /**
    * El texto de la frase que vamos a guardar.
    */
   private String frase;
   /**
    * El autor de la frase que vamos a guardar.
    */
   private String autor;
   /**
    * El tema de la frase que vamos a guardar.
    */
   private String tema;
     
   
   
   /**
    * Constructor basico.
    */
   public Frase() {
      // En blanco intencionalmente
   }
   /**
    * Constructor por clave.
    * @param id La clave que identifica este objeto.
    */
   public Frase(final Long id) {
      this.id = id;
   }
   /**
    * Constructor por identificador, frase, autor y tema.
    * @param frase La frase.
    * @param autor El autor de la frase.
    * @param tema El tema de la frase.
    */
   public Frase(final String frase, final String autor, final String tema) {
      this.frase = frase;
      this.autor = autor;
      this.tema = tema;
   }
   /**
    * Constructor por identificador, frase y autor.
    * @param id La clave del objeto.
    * @param frase La frase.
    * @param autor El autor de la frase.
    */
   public Frase(final Long id, final String frase, final String autor) {
      this.id = id;
      this.frase = frase;
      this.autor = autor;
   }
   /**
    * Se recupera al id del objeto.
    * @return el id del objeto.
    */
   @Id
   @GeneratedValue(generator = "nativo")
   @Column(name = "ID", unique = true, nullable = false)
   public Long getId() {
      return this.id;
   }
   /**
    * Para recuperar el id del objeto.
    * @param id El identificador del objeto.
    */
   public void setId(final Long id) {
      this.id = id;
   }
   /**
    * Se recupera la frase.
    * @return La frase .
    */
   @Column(name = "FRASE")
   public String getFrase() {
      return this.frase;
   }
   /**
    * Se modifica la frase.
    * @param frase El texto que contiene la frase.
    */
   public void setFrase(final String frase) {
      this.frase = frase;
   }
   /**
    * Se recupera el autor.
    * @return El autor de la frase.
    */
   @Column(name = "AUTOR")
   public String getAutor() {
	   return this.autor;
   }
   /**
    * Se modifica el autor de la frase.
    * @param frase El autor de la frase.
    */
   public void setAutor(final String autor) {
	   this.autor = autor;
   }
   /**
    * Se recupera el tema.
    * @return El tema de la frase.
    */
   @Column(name = "TEMA")
   public String getTema() {
	   return this.tema;
   }
   /**
    * Se modifica el tema de la frase.
    * @param frase El tema de la frase.
    */
   public void setTema(final String tema) {
	   this.tema = tema;
   }
   

   /**
    * Una cadena con el valor actual de todos los campos del objeto.
    * @return La frase en forma de cadena de este objeto.
    */
   @Override
   public String toString() {

      StringBuffer sb = new StringBuffer("\n id: ");
      sb.append(getId()).append("\n Frase: ").append(
               getFrase()).append("\n Autor: ").append(getAutor()).append("\n Tema: ").append(getTema());

      return sb.toString();

   }

}
